package com.hzit.controller;

import com.hzit.dto.StudentDTO;
import com.hzit.entity.Student;
import com.hzit.service.StudentService;
import com.hzit.util.PageResult;
import com.hzit.util.R;
import com.hzit.vo.StudentVo;
import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;

import java.util.List;

/**
 * 类名：
 * 作者：WF
 * 功能：
 */
@Controller
@RequestMapping("/student")
public class StudentController {
	@Autowired
	private StudentService studentService;
	// 同步方式：（服务端渲染）
	@GetMapping("/list1")
	public ModelAndView list(){
		List<Student> students = studentService.findAll();
		//参数1：逻辑视图（转换为真实的物理视图：/WEB-INF/jsp/ + list + .jsp==> /WEB-INF/jsp/list.jsp）
		return new ModelAndView("list","students",students);
	}
	// 异步方式：（客户端渲染）
	@GetMapping("/list2")
	// @ResponseBody       // 将java对象转换为json串
	public R list2(){
		List<Student> students = studentService.findAll();
		return R.ok().data("list",students);
	}

	// 分页带条件查询
	@PostMapping("/search/{page}/{pageSize}")
	@ResponseBody      // 将java对象转换为json
	// @RequestBody    // 将前端的json转换为java对象
	public R search(@PathVariable("page") Integer page,
	                @PathVariable("pageSize") Integer pageSize,
	                @RequestBody(required = false) StudentVo vo){ //
		PageResult<StudentDTO> pageResult = studentService.search(page,pageSize,vo);
		System.out.println("hello,search...");
		return R.ok().data("pageResult",pageResult);
	}

	// 查询单个学生
	@GetMapping("/findById/{id}")
	@ResponseBody
	public R findById(@PathVariable("id") Long id){
		StudentDTO studentDTO = studentService.findById(id);
		return R.ok().data("student",studentDTO);
	}

	// 添加学生
	@PostMapping("/add")
	@ResponseBody
	public R add(@RequestBody Student student){
		studentService.insert(student);
		return R.ok().message("添加学生成功！");
	}

	// 修改学生
	@PostMapping("/update")
	@ResponseBody
	public R update(@RequestBody Student student){
		studentService.update(student);
		return R.ok().message("修改学生成功！");
	}
}
